package com.jdaw.datastructure.sparsearray;

public class Queen8 {

    int max=8;//共有多少个皇后
    int[] array=new int[max];
    public static void main(String[] args) {
        Queen8 queen8=new Queen8();
        queen8.check(0);
    }

    //放置第n个皇后
    private void check(int n){
        if(n==max){
            print();
            return;
        }
        for(int i=0;i<max;i++){
            array[n]=i;
            if(judge(n)){
                check(n+1);
            }
        }
    }

    //查看摆放的第n个皇后和之前摆放的是否冲突
    private boolean judge(int n){
        for(int i=0;i<n;i++){
            //Math.abs(n-i)==Math.abs(array[i]-array[n]) 比较是否在同一条斜线上
            if(array[i]==array[n]||Math.abs(n-i)==Math.abs(array[n]-array[i])){
                return false;
            }
        }
        return true;
    }

    //输出皇后拜访位置
    private void print(){
        for(int i=0;i<max;i++){
            System.out.print(array[i]+"");
        }
        System.out.println("");
    }
}
